//
//
//class Solution {
//    public boolean canFinish(int numCourses, int[][] prerequisites) {
//        int[] course = new int[numCourses];
//        Map<Integer, List<Integer>> hash = new HashMap<>();
//        for (int i = 0; i < prerequisites.length; i++) {
//            int[] pair = prerequisites[i];
//            int condition = pair[1];
//            int result = pair[0];
//            course[result]++;
//            List<Integer> courses = hash.getOrDefault(condition, new ArrayList<>());
//            courses.add(result);
//            hash.put(condition, courses);
//            ;
//        }
//
//        Queue<Integer> unlocked = new LinkedList<>();
//        for (int i = 0; i < course.length; i++) {
//            if (course[i] == 0) unlocked.offer(i);
//        }
//
//        while (!unlocked.isEmpty()) {
//            int cur = unlocked.poll();
//            List<Integer> courses = hash.getOrDefault(cur, new ArrayList<>());
//            for (int i = 0; i < courses.size(); i++) {
//                int result = courses.get(i);
//                course[result]--;
//                if (course[result] == 0) {
//                    unlocked.offer(result);
//                }
//            }
//        }
//
//        for (int i = 0; i < course.length; i++) {
//            if (course[i] != 0) return false;
//        }
//        return true;
//    }
//}